// *************************************
// * Creator:SunnyPaine
// * DateTime:2024/08/14 16:08:35
// * Description:<Description>
// * CopyRight:
// * ***********************************

using System;
using System.Threading.Tasks;

namespace SunnyPaine.Autofac.Extension.Mvvm.UI
{
    /// <summary>
    /// 用于协调UI线程和非UI线程操作的关键类，通过消息循环机制确保UI元素的安全更新。
    /// </summary>
    public interface IDispathcerService
    {
        /// <summary>
        /// 异步执行委托。
        /// </summary>
        /// <param name="action"></param>
        /// <returns></returns>
        Task BeginInvoke(Action action);

        /// <summary>
        /// 异步执行委托。
        /// </summary>
        /// <param name="action"></param>
        /// <param name="delay">延迟时间。</param>
        /// <returns></returns>
        Task BeginInvoke(Action action, TimeSpan delay);

        /// <summary>
        /// 同步执行委托。
        /// </summary>
        /// <param name="action"></param>
        void Invoke(Action action);
    }
}